<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>统计坏数对的数目</title>
</head>
<body>
  <!-- 思路
  先求出所有数对 Cn2 = n*(n-1)/2
  然后找到好数对儿，剩下的就是 坏数对儿了
  好数对儿 定义相反 对于 i < j 满足 j - i = nums[j] - nums[i] => nums[j] -j = nums[i] - i
  这样就可以直接hash记录了 然后减去就是答案 -->
  <script>
    function fn(nums) {
      const c = n => n * (n - 1) / 2, n = nums.length, map = new Map()
      let ans = c(n)
      // console.log(ans); // 6
      for (let i = 0; i < n; i++) {
        map.set(nums[i] - i, (map.get(nums[i] - i) || 0) + 1)
      }
      for (let [k, v] of map) {
        ans -= c(v)
      }
      return ans
    }
    console.log(fn([4, 1, 3, 3]))
  </script>
</body>
</html>